/**
 * @file		bike2.cpp
 * @description		This is example builds on the bike.cpp example
 *			by adding member functions. This is a much better
 *			approach. The rest of the example is similar to 
 *			bike.cpp with the exception of utilizing member
 *			functions to access the private data.
 * @course		CSCI 123 Section 00000
 * @assignment 
 * @date		mm/dd/yyyy
 * @author		Brad Rippe (00000000) brippe@fullcoll.edu
 * @version		2.0
 */
#include <iostream>
#include <string>
using namespace std;

/**
 * This is the bike class. The public members and functions
 * are accessible to every. The private members and functions
 * are only accessible to the Bike class. This example doesn't use
 * a constructor to create the Bike Object. In this case, C++
 * will provide one for us that does NOTHING.
 */
class Bike {
public:
	/**
	 * Gets the bike's name.
	 * @return the name of the bike
	 */
	string getName();

	/**
	 * Set the bike's name.
	 * @param aName the name to set the bike's name to.
	 */
	void setName(string aName);

	/**
	 * Gets the bike's name.
	 * @return the name of the bike
	 */
	int getSize();

	/**
	 * Set the bike's frame size.
	 * @param aSize the size to set the bike's frame to.
	 */
	void setSize(int aSize);

	/**
	 * Gets the bike's name.
	 * @return the name of the bike
	 */
	double getWheelDiameter();

	/**
	 * Set the bike's wheel diameter
	 * @param aDiameter the diameter to set the bike's diameter to.
	 */
	void setWheelDiameter(double aDiameter);

private:
	string mName;
	int mSize;
	double mWheelDiameter;
};

/**
 * @return zero if the application executes successfully
 */
int main() {

	Bike mtnBike;
	mtnBike.setName("Foes");
	mtnBike.setSize(18);
	mtnBike.setWheelDiameter(26.0);

	cout << "Mountain Bike " << mtnBike.getName() << endl;
	cout << "has a frame size of " << mtnBike.getSize() << endl;
	cout << "and a wheel diameter of " << mtnBike.getWheelDiameter() << endl;

	return 0;
}

string Bike::getName() {
	return mName;
}
void Bike::setName(string aName) {
	mName = aName;
}
int Bike::getSize() {
	return mSize;
}
void Bike::setSize(int aSize) {
	mSize = aSize;
}
double Bike::getWheelDiameter() {
	return mWheelDiameter;
}
void Bike::setWheelDiameter(double aDiameter) {
	mWheelDiameter = aDiameter;
}

